#!/bin/bash

# 设置颜色变量
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
CYAN='\033[0;36m'
BOLD='\033[1m'
NC='\033[0m'

# 错误处理函数
error_exit() {
    echo -e "${RED}错误：$1 安装失败！${NC}"
    echo -e "${YELLOW}请检查："
    [ -n "$2" ] && echo "$2"
    echo -e "然后重试本脚本${NC}"
    exit 1
}

# 检查root权限
check_root() {
    if [ "$EUID" -ne 0 ]; then
        error_exit "请使用 sudo 或 root 权限运行本脚本"
    fi
}

# 基础依赖安装
install_git() {
    if ! command -v git &> /dev/null; then
        echo -e "${YELLOW}安装 Git...${NC}"
        apt-get update -qq && apt-get install -y git || error_exit "Git安装失败" "请手动运行：apt-get update && apt-get install -y git"
    fi
}

# 安装Napcat QQ
install_napcat() {
    echo -e "\n${CYAN}[1/2] 部署Napcat QQ...${NC}"
    
    # 下载官方安装脚本
    if ! curl -fsSL -o /tmp/napcat.sh https://nclatest.znin.net/NapNeko/NapCat-Installer/main/script/install.sh; then
        error_exit "Napcat安装脚本下载失败" "请检查网络连接或访问：https://napcat.cn"
    fi
    
    # 执行安装并检查状态
    if ! bash /tmp/napcat.sh; then
        error_exit "Napcat安装失败" "请查看上方日志获取详细信息"
    fi

    # 验证Docker安装
    if ! docker ps &> /dev/null; then
        error_exit "Docker服务异常" "请手动运行：systemctl status docker"
    fi

    # 获取访问信息
    NAPCAT_IP=$(curl -s 4.ipw.cn)
    echo -e "\n${GREEN}Napcat QQ 安装完成！"
    echo -e "管理面板：${BLUE}http://${NAPCAT_IP}:6099/webui/${NC}"
}

# 安装LangBot
install_langbot() {
    echo -e "\n${CYAN}[2/2] 部署LangBot...${NC}"
    
    # 克隆/更新仓库
    if [ -d "LangBot" ]; then
        echo -e "${YELLOW}检测到已有仓库，尝试更新...${NC}"
        cd LangBot || error_exit "进入LangBot目录失败"
        git pull || error_exit "代码更新失败" "请检查目录权限"
    else
        git clone https://github.com/RockChinQ/LangBot.git || error_exit "仓库克隆失败" "请检查git权限或网络连接"
        cd LangBot || error_exit "进入LangBot目录失败"
    fi

    # 启动容器并检查状态
    echo -e "${YELLOW}正在启动服务容器...${NC}"
    if ! docker compose up -d; then
        error_exit "容器启动失败" "请检查docker-compose.yml配置"
    fi

    # 验证容器状态
    if ! docker ps | grep -q langbot; then
        error_exit "LangBot容器未运行" "请检查端口冲突或资源限制"
    fi

    # 获取访问信息
    LANGBOT_IP=$(curl -s 4.ipw.cn)
    echo -e "\n${GREEN}LangBot 安装完成！"
    echo -e "访问地址：${BLUE}http://${LANGBOT_IP}:8000${NC}"
}

# 主流程
clear
check_root
echo -e "${CYAN}${BOLD}"
cat << "EOF"
 _   _               _         ____   ___   ______ _____ 
| \ | |   __ _  ___ | |_ ___  |___ \ / _ \ / / ___|___ / 
|  \| |  / _` |/ _ \| __/ __|   __) | | | | | |     |_ \ 
| |\  | | (_| | (_) | |_\__ \  / __/| |_| | | |___ ___) |
|_| \_|  \__,_|\___/ \__|___/ |_____|\___/|_|\____|____/ 
EOF
echo -e "${NC}"

install_git
install_napcat
install_langbot

# 显示最终信息
echo -e "\n${GREEN}${BOLD}✔ 全部服务部署完成！${NC}"
echo -e "${CYAN}===========================================${NC}"
echo -e "Napcat ：${BLUE}http://${NAPCAT_IP}:6099/webui/${NC}"
echo -e "LangBot ：  ${BLUE}http://${LANGBOT_IP}:8000${NC}"
echo -e "${CYAN}===========================================${NC}"
echo -e "${YELLOW}管理命令："
echo -e "查看Napcat日志：docker logs napcat -f"
echo -e "重启LangBot：   cd LangBot && docker compose restart"
echo -e "更新LangBot：   cd LangBot && git pull && docker compose up -d${NC}"